import sys
from PyQt5.QtWidgets import QApplication,QWidget,QLabel,QVBoxLayout,QLineEdit
from PyQt5.Qt import *
from PyQt5.QtGui import QFont,QPixmap

'''
在Qlabel学习过程中发现linkHovered和linkActivated（鼠标点击和划过事件）时候出现该信号不能被触发的问题（只有超链接才能触发事件）
解决：
    需要设置Label的Text内容并且需要href属性和setOpenExternalLinks(False)设置为False
    
    label1.setText("<a href = 'http://blog.csdn.NET/wangzhongzheneasy'>王中振的博客</a>");
    label1.setOpenExternalLinks(False)
    
    
    
该demo功能
    1、实现label1普通label
    2、label2实现图片label
    3、实现label和linedit伙伴关系
'''
class MyLabel(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(500, 500, 500, 500)
        self.setWindowTitle("Label Demo")

        #设置lable坐标 和字体 对其方式
        self.label1 = QLabel("姓名:", self)
        self.label1.setGeometry(50, 50, 200, 50)
        font1 = QFont("隶书", pointSize=20)
        self.label1.setFont(font1)
        self.label1.setAlignment(Qt.AlignVCenter | Qt.AlignRight)

        # setToolTip(QString) 设置信息提示，当用户的鼠标放在QLabel 文本框上时会自动跳出文字
        # label1.setToolTip("Lable被鼠标点击了")
        print(f"label text:[{self.label1.text()}]")

        self.label1.setText("<a href = 'http://blog.csdn.NET/wangzhongzheneasy'>王中振的博客</a>");
        self.label1.setOpenExternalLinks(False)

        #信号linkActivated(): 当鼠标点击Qlabel时触发,  这里实现了自定义的slot函数mouseActivatedHandle
        self.label1.linkActivated.connect(self.mouseActivatedHandle)

        #linkActivated(): 当鼠标点击Qlabel时触发
        self.label1.linkHovered.connect(self.mouseHoveredHandle)


        #这里是label2
        self.label2 =QLabel(self)
        self.label2.setAlignment(Qt.AlignBottom)
        self.label2.setToolTip("这是一个图片label")
        self.label2.setPixmap(QPixmap("./123.jpg"))

        #设置label和lineedit控件为伙伴关系
        self.namelabel = QLabel('&Name')  #热键
        self.nameLineEdit = QLineEdit()
        self.namelabel.setBuddy(self.nameLineEdit)


        #设置垂直布局
        vlayout = QVBoxLayout(self)
        vlayout.addWidget(self.label1)
        vlayout.addWidget(self.label2)
        vlayout.addWidget(self.namelabel)
        vlayout.addWidget(self.nameLineEdit)

        self.setLayout(vlayout)

    def mouseActivatedHandle(self):
        print("label was clicked by mouse!!!")

    def mouseHoveredHandle(self):
        print("label was hovered by mouse!!!")


if __name__ == "__main__":
    app = QApplication(sys.argv)
    label = MyLabel()
    label.show()

    sys.exit(app.exec_())